package com.xwm93up.guavalimit;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * @Description: 自定义限流注解
 * @Author: xwm93up
 * @Since: 2021/10/26 10:50
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Documented
public @interface Limit {
    /**
     * 资源的key, 唯一
     * 作用: 不同的接口, 不同的流量控制
     * @return String
     */
    String key() default "";

    /**
     * 最多的访问限制次数
     * @return double
     */
    double permitsPerSecond ();

    /**
     *获取令牌最大等待时间
     * @return long
     */
    long timeout();

    /**
     * 获取令牌最大等待时间, 单位(例:分钟/秒/毫秒) 默认:毫秒
     * @return TimeUnit
     */
    TimeUnit timeunit() default TimeUnit.MILLISECONDS;

    /**
     * 得不到令牌的提示语
     * @return String
     */
    String msg() default "系统繁忙,请稍后再试.";
}
